package river_city_ransom.implementations;

import exceptions.ComposantError;
import river_city_ransom.services.Dimensions;


public class Dimensions_I implements Dimensions {
	private int largeur;
	private int hauteur;
	private int profondeur;

	public Dimensions_I(int largeur, int hauteur, int profondeur) {
		super();
		try {
			init(largeur, hauteur, profondeur);
		}
		catch(ComposantError e) {
			System.err.println(e.getMessage());
		}
	}

	@Override
	public boolean equals(Object o) {
		if(!(o instanceof Dimensions)) {
			return false;
		}
		if(largeur() != ((Dimensions) o).largeur()) {
			return false;
		}
		if(hauteur() != ((Dimensions) o).hauteur()) {
			return false;
		}
		if(profondeur() != ((Dimensions) o).profondeur()) {
			return false;
		}
		
		return true;
	}
	
	@Override
	public String toString() {
		return "[" + largeur() + " ; " + hauteur() + " ; " + profondeur() + "]";
	}

	/** ________________________________________________________ CONSTRUCTORS */
	@Override
	public void init(int largeur, int hauteur, int profondeur) throws ComposantError {
		this.largeur = largeur;
		this.hauteur = hauteur;
		this.profondeur = profondeur;
	}

	/** _________________________________________________________ OBSERVATORS */
	@Override
	public int largeur() {
		return largeur;
	}

	@Override
	public int hauteur() {
		return hauteur;
	}

	@Override
	public int profondeur() {
		return profondeur;
	}
}
